// pages/shopcart/shopcart.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    dataSource: [], //购物车数据
    total_all_price: 0, //商品的总价格
    all_shop: 0, //所选商品的id
    shop_quantity: 0, //所选商品的数量
    good_one: [], //单个商品的数据
    checked: false, //是否为全选
    is_shop: false, //是否有商品
    shopData: null

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log(options)
    var that = this;
    var cart_id = options.id;
    var name = options.title;
    var price = options.pricenum;
    var img = options.goods_cover;
    that.setData({
      dataSource: [{
        cart_id: cart_id, //商品ID
        name: name, //商品名称
        quantity: 1, //商品数量
        image: img, //商品图片
        price: price, //商品价格
        checks: false //是否选中
      }],
    })

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    var that = this;
    that.setData({
      total_all_price: 0,
      checked: false
    })
    var user_data = wx.getStorageSync('user_data');

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },
  // 添加按钮被点击
  addButtonClick: function (tap) {
    var that = this;
    var user_data = wx.getStorageSync('user_data'); //获取缓存里面的用户信息
    const index = parseInt(tap.currentTarget.id); //获取当前的商品的索引值
    let dataSource = that.data.dataSource; //购物车所有的商品数据
    let quantity = dataSource[index].quantity; //获取购买数量
    quantity = quantity + 1; //将购买数量 +1
    dataSource[index].quantity = quantity; //更改当前商品的数量
    that.setData({
      dataSource: dataSource //更新商品数据
    });
    that.getTotalPrice(); //重新计算总价格

  },
  // 减少按钮被点击

  reduceButtonClick: function (tap) {
    var that = this;
    var user_data = wx.getStorageSync('user_data');
    const index = parseInt(tap.currentTarget.id);
    let dataSource = that.data.dataSource[index];
    let quantity = dataSource.quantity; //获取购买数量
    if (quantity == 1) { //判断是否等于1
      wx.showModal({
        title: '提示',
        content: '确定将  ' + dataSource.name + '  移出购物车吗？',
        success: function (sm) {
          if (sm.confirm) {
            var tempData = that.data.dataSource; //所有商品数据
            tempData.splice(index, 1); //从当前索引值开始删除1项数据
            that.setData({
              dataSource: tempData //更新数据
            })
          } else if (sm.cancel) {
            return false;
          }
        }
      })

    } else { //如果商品数量不等于 1                                 
      var dataSource_2 = that.data.dataSource;
      var quantity2 = quantity - 1;
      dataSource_2[index].quantity = quantity2;
      this.setData({
        dataSource: dataSource_2
      });

    }

    that.getTotalPrice(); //重新计算总价格

  },

  /*checkbox 选中或未选中都会触发该事件*/

  checkboxChange: function (e) {
    var that = this;
    that.setData({
      all_shop: e.detail.value,
    })
  },

  /*点击结算 */

  toBuy: function (tap) {
    var that = this;
    let good = this.data.dataSource; //所有商品数据
    let user_info = wx.getStorageSync('user_data')
    if (that.data.total_all_price == 0) { //判断是否选择了商品，这里我是判断总价格
      wx.showToast({
        title: '请选择商品',
      })

    } else {
      this.data.good_one = []; //重置数组
      for (var i = 0; i < this.data.dataSource.length; i++) { //循环购物车中的商品
        if (good[i].checks == true) {
          var good_one1 = [good[i].cart_id, good[i].quantity];
          this.data.good_one.push(good_one1) //将数据添加到数组里边
        }
      }
    }
  },

  /**点击全选 */

  setChecked: function () {
    let checked = this.data.checked; //是否为全选状态
    checked = !checked; //改变状态
    let dataSource = this.data.dataSource;
    for (let i = 0; i < dataSource.length; i++) {
      dataSource[i].checks = checked; // 改变所有商品状态
    }

    this.setData({
      checked: checked, //更新全选状态
      dataSource: dataSource //更新所有商品的状态
    });
    this.getTotalPrice(); //重新获取总价格
  },

  /**点击单个多选框 */

  allCheckbox: function (tap) {
    var a = 0 //设置初始总价格
    var index = tap.currentTarget.dataset.index //获取索引值
    let good = this.data.dataSource //获取购物车列表
    const checks = good[index].checks; //获取当前商品的选中状态
    good[index].checks = !checks //改变当前商品的状态
    var all_shop_1 = parseInt(good[index].cart_id) //获取商品的购物车id
    var shop_quantity_1 = good[index].quantity //获取商品的数量
    this.setData({
      dataSource: good
    });
    this.getTotalPrice() //重新获取总价格

    /*设置全选 */
    for (let i = 0; i < good.length; i++) {
      a += good[i].quantity * good[i].price
    }

    if (this.data.total_all_price == a) {
      this.setData({
        checked: true
      })
    } else {
      this.setData({
        checked: false
      })
    }
  },

  /**计算总价格  */

  getTotalPrice() {
    let good = this.data.dataSource; // 获取购物车列表
    let total = 0;
    for (let i = 0; i < good.length; i++) { // 循环列表得到每个数据
      if (good[i].checks) { // 判断选中才会计算价格
        total += good[i].quantity * good[i].price; // 所有价格加起来
      }
    }

    this.setData({ // 最后赋值到data中渲染到页面
      good: good,
      total_all_price: total.toFixed(2),
    });
  },
})
